package org.xx.sipahi;

import java.util.Date;

import static org.apache.commons.lang3.StringUtils.trimToEmpty;
import static org.xx.armory.commons.SysUtils.copyDate;

/**
 * 页面。
 */
public abstract class AbstractPage {
    /**
     * 草稿
     */
    public static final int DRAFT = 0;
    /**
     * 已提交待审核。
     */
    public static final int COMMITTED = 1;
    /**
     * 已发布上线。
     */
    public static final int PUBLISHED = 2;
    /**
     * 已撤回。
     */
    public static final int REVOKED = 3;

    private final Long id;
    private final String title;
    private final Category category;
    private final String keywords;
    private final String brief;
    private final String creator;
    private final Date createTime;
    private final String updater;
    private final Date lastModifiedTime;
    private final int status;
    private final String content;

    public AbstractPage(
            Long id,
            String title,
            Category category,
            String keywords,
            String brief,
            String creator,
            Date createTime,
            String updater,
            Date lastModifiedTime,
            int status,
            String content
    ) {
        this.id = id;
        this.title = trimToEmpty(title);
        this.category = category;
        this.keywords = trimToEmpty(keywords);
        this.brief = trimToEmpty(brief);
        this.creator = trimToEmpty(creator);
        this.createTime = copyDate(createTime);
        this.updater = updater;
        this.lastModifiedTime = copyDate(lastModifiedTime);
        this.status = status;
        this.content = content != null ? content : "";
    }

    /**
     * 获取页面的ID。
     *
     * @return 页面ID。
     */
    public Long getId() {
        return this.id;
    }

    /**
     * 获取页面的标题。
     *
     * @return 页面的标题。
     */
    public String getTitle() {
        return this.title;
    }

    /**
     * 获取页面的栏目。
     *
     * @return 页面的栏目。
     */
    public Category getCategory() {
        return this.category;
    }

    /**
     * 获取页面的关键字。
     *
     * @return 页面的关键字。
     */
    public String getKeywords() {
        return this.keywords;
    }

    /**
     * 获取页面的摘要。
     *
     * @return 页面的摘要。
     */
    public String getBrief() {
        return this.brief;
    }

    /**
     * 获取页面的创建人。
     *
     * @return 页面的创建人。
     */
    public String getCreator() {
        return this.creator;
    }

    /**
     * 获取创建时间。
     *
     * @return 创建时间。
     */
    public Date getCreateTime() {
        return copyDate(this.createTime);
    }

    /**
     * 获取页面的最后修改人。
     *
     * @return 页面的最后修改人。
     */
    public String getUpdater() {
        return this.updater;
    }

    /**
     * 获取页面的最后修改时间。
     *
     * @return 页面的最后修改时间。
     */
    public Date getLastModifiedTime() {
        return copyDate(this.lastModifiedTime);
    }

    /**
     * 获取页面状态。
     *
     * @return 页面状态。
     */
    public int getStatus() {
        return this.status;
    }

    /**
     * 获取页面内容。
     *
     * @return 页面内容。
     */
    public String getContent() {
        return this.content;
    }
}
